/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controle.gui.utils;

import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;
import modelo.Imovel;
import modelo.Quadra;
import persistencia.dao.AbstractDAO;

/**
 *
 * @author maycon
 */
public class ComboBoxUtils {

    /**
     * Inicializa um jComboBox com todos os objetos de uma tabela ordenados
     */
    public static DefaultComboBoxModel inicializaComboBoxEntidades(String primeiraPosicao, String nomeTabela, String atributoOrdenado) {
        try {

            List<String> list = new ArrayList<String>();

            list = AbstractDAO.consultar("select nome from " + nomeTabela + " order by " + atributoOrdenado);

            DefaultComboBoxModel model = new DefaultComboBoxModel();

            model.addElement(primeiraPosicao);
            for (int i = 0; i < list.size(); i++) {
                model.addElement(list.get(i));
            }

            return model;

        } catch (Exception er) {

            JOptionPane.showMessageDialog(null, "Não foi possível carregar o ComboBox.", "Erro", JOptionPane.ERROR_MESSAGE);
            er.printStackTrace();
            return null;

        }
    }

    /**
     * Inicializa um jComboBox com todos os objetos de uma tabela ordenados
     */
    public static DefaultComboBoxModel inicializaComboBoxGenerico(String primeiraPosicao, String select, String nomeTabela, String atributoOrdenado) {
        try {

            List<String> list = new ArrayList<String>();

            list = AbstractDAO.consultar("select " + select + " from " + nomeTabela + " order by " + atributoOrdenado);

            DefaultComboBoxModel model = new DefaultComboBoxModel();

            model.addElement(primeiraPosicao);
            for (int i = 0; i < list.size(); i++) {
                model.addElement(list.get(i));
            }

            return model;

        } catch (Exception er) {

            JOptionPane.showMessageDialog(null, "Não foi possível carregar o ComboBox.", "Erro", JOptionPane.ERROR_MESSAGE);
            er.printStackTrace();
            return null;

        }
    }

    public static DefaultComboBoxModel inicializaComboBoxGenerico(String primeiraPosicao, List list) {
        try {

            DefaultComboBoxModel model = new DefaultComboBoxModel();
            model.addElement(primeiraPosicao);

            if (list.get(0) instanceof Quadra) {

                for (int i = 0; i < list.size(); i++) {
                    model.addElement(((Quadra) list.get(i)).getCodigo());
                }

            } else if (list.get(0) instanceof Imovel) {

                for (int i = 0; i < list.size(); i++) {
                    String complemento = ((Imovel)list.get(i)).getComplemento() != null ? ((Imovel)list.get(i)).getComplemento().toString() : "";
                    model.addElement(((Imovel)list.get(i)).getNumero() + " - " + complemento);
                }

            }

            return model;

        } catch (Exception er) {

            JOptionPane.showMessageDialog(null, "Não foi possível carregar o ComboBox.", "Erro", JOptionPane.ERROR_MESSAGE);
            er.printStackTrace();
            return null;

        }
    }
}
